/**-----------------云台控制---------------
	* 
	
 不区分大小写
 说明：
 LEFT 左转
 RIGHT右转
 UP 上转
 DOWN 下转
 ZOOM_IN 焦距变大
 ZOOM_OUT 焦距变小
 LEFT_UP 左上
 LEFT_DOWN 左下
 RIGHT_UP 右上
 RIGHT_DOWN 右下 FOCUS_NEAR 焦点前移
 FOCUS_FAR 焦点后移 IRIS_ENLARGE 光圈扩大
 IRIS_REDUCE 光圈缩小
 WIPER_SWITCH 接通雨刷开关
 START_RECORD_TRACK开始记录轨迹
 STOP_RECORD_TRACK 停止记录轨迹
 START_TRACK 开始轨迹
 STOP_TRACK 停止轨迹
 
 以下命令presetIndex不可
 为空：
 GOTO_PRESET到预置点
*/
const eCtrlType = {
	UP: 2, //上转
	LEFT: 0, // 左转
	LEFT_UP: 4, // 左上
	LEFT_DOWN: 5, //左下
	DOWN: 3, // 下转
	RIGHT: 1, //右转
	RIGHT_UP: 6, // 右上
	ZOOM_IN: 8, // 焦距变大
	ZOOM_OUT: 9, // 焦距变小
	RIGHT_DOWN: 7, //右下
	/**
	 FOCUS_NEAR,// 焦点前移
 	"FOCUS_FAR", // 焦点后移 
	IRIS_ENLARGE,// 光圈扩大
 	"IRIS_REDUCE", // 光圈缩小
 	WIPER_SWITCH, // 接通雨刷开关
 	START_RECORD_TRACK, //开始记录轨迹
 	STOP_RECORD_TRACK, // 停止记录轨迹
 	START_TRACK, // 开始轨迹
 	STOP_TRACK, // 停止轨迹
	GOTO_RESET,//转到预置点*/
};

//0:左转 1:右转 2:上转 3:下转 
//4:左上 5:左下 6:右上 7:右下 
//8:焦距变大 9:焦距变小 
//10:焦点前移 11:焦点后移 12:光圈扩大 13:光圈缩小 14:接通雨刷开关 15:开始记录轨迹 16:停止记录轨迹 17:开始轨迹 18:停止轨迹 19:到预置点
//当摄像头为海康isc安防平台，且command =  19（到预置点时）
//export default eCtrlType;

;
class CtrlCam {
	api;
	constructor({
		api
	}) {
		this.api = api;
	}

	dat = [{
			name: "放大",
			cls: 'vb v-out',
			hB: (code) => {
				this.hBegin(code, eCtrlType.ZOOM_IN)
			},
		}, {
			name: "缩小",
			cls: 'vb v-in',
			hB: (code) => {
				this.hBegin(code, eCtrlType.ZOOM_OUT)
			},
		},
		{
			name: "上",
			cls: 'vb v-dir v-up',
			hB: (code) => {
				this.hBegin(code, eCtrlType.UP)
			},
		}, {
			name: "下",
			cls: 'vb v-dir v-down',
			hB: (code) => {
				this.hBegin(code, eCtrlType.DOWN)
			},
		}, {
			name: "左",
			cls: 'vb v-dir v-left',
			hB: (code) => {
				this.hBegin(code, eCtrlType.LEFT)
			},
		}, {
			name: "右",
			cls: 'vb v-dir v-right',
			hB: (code) => {
				this.hBegin(code, eCtrlType.RIGHT)
			},
		},
	];

	isbegin = false;
	/**
	 * @param {Object} code
	 * @param {Object} action //0开始，1停止
	 * @param {Object} cmd
	 */
	hDo(code, action, cmd, b) {
		// window.__map.hApi('hServerPtz', code, action, cmd, d => {
		// 	console.log("云台控制 返回", d);
		// });
		this.api['hServerPtz'](code, action, cmd, d => {
			//console.log("云台控制 返回", d, code, action == 0 ? "开始" : "停止", "，方向", cmd);
			b?.();
		});
	}
	hBegin(code, tp) {
		//"presetIndex": 20 //预置点编号通常300以内
		this.hDo(code, 0, tp, () => {
			this.hDo(code, 1, tp);
		});
	}

	hEnd(code, tp) {
		//this.hDo(code, 1, tp);
	}
};
export {
	eCtrlType,
	CtrlCam
};